顧名思義,就是將程式放置在極為極端的情況下進行測試,就好像我們在學測考試前的數次模擬考一樣,明明難度比真的考試難很多倍,能夠重創學生的考試信心以及早點放棄自我,那為甚麼要多花錢一起考呢?這是因為,只有在極端難的測試中,我們才能發現自己的盲點死穴,及早修正及早改善學習中的問題。然而,今天所知的壓力測試不再是花錢就能請人幫忙測的了,課程會教我們做一個能解決一樣問題的解法就算是暴力法也OK,做出正確輸出樣本,然後再與我們新的程式同時測壓力測試,也就是輸入無限隨機性資料,比較彼此的答案是否一致,目的是希望新的程式與對照程式結果若能一致,就算是不錯的。然而,人算不如天算,不管對照用程式還是新測試程式,都有可能是錯誤的,只是錯的點不一樣而已,今天的課程銜接上個題目(Day 7),找出最大乘積的題目:
#include<iostream>
#include<vector>
using namespace std;
long long MaxPairwiseProduct(const vector<int>& numbers){
long long result =0;
int n = numbers.size();
for(int i=0;i<n;i++){
for(int j=i+1; j<n;j++){
if((long long)numbers[i] * numbers[j] > result){
result = numbers[i]*numbers[j];
}
}
}
return result;
}
int main(){
int n;
cin>>n;
vector<int>numbers(n);
for(int i=0;i<n;i++){
cin>>numbers[i];
}
int result = MaxPairwiseProduct(numbers);
cout<<result<<"\n";
}
/* Online C++ Compiler and Editor */
#include<cstdlib>
#include<iostream>
#include<vector>
using std::vector;
using std::cin;
using std::cout;
long long MaxPairwiseProduct(const vector<int>& numbers){//暴力解,對照組
long long result =0;
int n = numbers.size();
for(int i=0;i<n;i++){
for(int j=i+1; j<n;j++){
if((long long)numbers[i] * numbers[j] > result){
result = numbers[i]*numbers[j];
}
}
}
return result;
}
long long MaxPairwiseProductFast(const vector<int>& numbers){//快速解,實驗組
int n = numbers.size();
int max_index1 = -1;
for(int i=0;i<n;i++){
if((max_index1 = -1||(numbers[i]>numbers[max_index1]))){
max_index1 = i;
}
}
inr max_index2 = -1;
for(int j=0;j<n;j++){
if((numbers[j]!=numbers[max_index1])&&
((max_index2 == -1)||(numbers[j]>numbers[max_index2]))){
max_index2 = j;
}
}
return ((long long )(numbers[max_index1]))*numbers[max_index2];
}
int main(){
while(true){
int n=rand()%10+2;//2~11輸入
cout<<n<<"\n";
vector<int>a;
for(int i=0;i<n;i++){
a.push_back(rand()%10000);//隨機測資資料
}
for(int i=0;i<n;i++){
cout<<a[i]<<' ';
}
cout<<"\n";
long long res1 = MaxPairwiseProduct(a);
long long res2 = MaxPairwiseProductFasr(a);
if(res1!=res2){
cout<<"Wrong answer: "<<res1<<" "<<res2<<"\n";
break;
}
else{
cout<<"OK"<<"\n";
}
}
int n;
cin>>n;
vector<int>numbers(n);
for(int i=0;i<n;i++){
cin>>numbers[i];
}
long long result = MaxPairwiseProductFasr(numbers);
cout<<result<<"\n";
return 0;
}
今天就到這裡,我盡可能學習。
附上疑似當機跑測試圖。